import{
    ethers,
    BigNumberish,
    BigNumber,
    CallOverrides,
    BytesLike,
    Signer,
    providers
} from "ethers";

export interface IERC721Client{
  name(config ?:CallOverrides): Promise<string>;
        
  symbol(overrides?: CallOverrides): Promise<string>;

  connectProvider(address: string, provider: providers.Provider):void;

  connectSigner(signer: Signer):void;

  setWaitConfirmations(num: number): void;

  approve(
      to: string,
      tokenId: BigNumberish,
      config ?:CallOverrides
    ): Promise<any>;

    balanceOf(owner: string, config ?:CallOverrides): Promise<BigNumber>;

    getApproved(
      tokenId : BigNumberish,
      config ?: CallOverrides
    ): Promise<string>;

    isApprovedForAll(
      owner: string,
      operator: string,
      config ?:CallOverrides
    ): Promise<boolean>;

    ownerOf(
      tokenId: BigNumberish,
      config ?:CallOverrides
    ): Promise<string>;

  //   "safeTransferFrom(address,address,uint256)"(
  //     from: string,
  //     to: string,
  //     tokenId: BigNumberish,
  //     config ?:CallOverrides
  //   ): Promise<any>;

  //   "safeTransferFrom(address,address,uint256,bytes)"(
  //     from: string,
  //     to: string,
  //     tokenId: BigNumberish,
  //     _data: BytesLike,
  //     config ?:CallOverrides
  //   ): Promise<any>;

  setApprovalForAll(
      operator: string,
      approved: boolean,
      config ?:CallOverrides
  ): Promise<any>;

  tokenURI(
      tokenId: BigNumberish,
      config ?:CallOverrides
  ): Promise<string>;

  transferFrom(
      from: string,
      to: string,
      tokenId: BigNumberish,
      config ?:CallOverrides
  ): Promise<any>;
}